/**
 * 参数：接受基本类型
 * @param val 
 * @param val2 
 */
function show(val: number, val2: string) {

}
show(1, "xiaowang")

/**
 * 参数：接受引用类型
 * @param val 
 * @param obj 
 */
function play(val: number, obj: { id: number }) {

}
play(1, { id: 1 })

/**
 * 接受函数类型
 * @param fun 
 */
function play2(fun: () => void) {
    fun()
}
play2(() => { })

/**
 * 不定参数的场景
 * @param args 
 */
function play3(...args: number[]) {
    console.log(args[0]);

}
play3(1, 2, 3, 4, 5)

/**
 * 函数的参数基本类型
 * 函数返回值，
 * @param val1 
 * @param val2 
 * @returns 
 */
function play4(val1: number, val2: number):number {
    return val1 + val2
}

const res = play4(1,2)

"123".substring(1,2)

const res2 = "1379002346".replace(/[13]/,"**")

const message = (params1:number):number=>{
    return params1 * 2
}
message(2)

function getMaxValue(args:number[]):number{
    let max = args[0]
    args.forEach(item=>{
        max = max < item ? item : max
    })
    return max
}
let temp2:number[] = [1,5,7,9]

const max = getMaxValue(temp2)
console.log(max);

/**
 * 接受一个对象，接受一个key，返回这个key对应值
 */
function getValueByKey(obj:{id:number,name:string},key:string){
    //无法确认key的值是id还是name，只能确认key是string
    return obj.name
}
let temp3 = {id:1,name:"xiaowang"}
getValueByKey(temp3,"address")

